package com.ynet.middleground.user.bean;

import com.ynet.core.common.BaseReqObj;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
 * @author DaiGaoLe 2019年10月18日
 * @category 用户注册请求
 */
@Data
@ApiModel(value = "用户注册请求", description = "用户注册请求")
public class UserRegistrationReq extends BaseReqObj {

    private static final long serialVersionUID = 5008226530277783798L;

    /**
     * 用户类型,0-企业用户,2-个人用户
     */
    @ApiModelProperty(value = "用户类型,0-企业用户,2-个人用户", notes = "用户类型,0-企业用户,2-个人用户", dataType = "String", required = true)
    @NotEmpty(message = "用户类型不能为空")
    @Size(min = 1, max = 1, message = "长度为1")
    @Pattern(regexp = "[02]", message = "用户类型只能是0或者2(用户类型,0-企业用户,2-个人用户)")
    private String userType;

    /**
     * 用户账号
     */
    @ApiModelProperty(value = "用户账号,注册企业时可不传", notes = "用户账号,注册企业时可不传", dataType = "String")
    @Pattern(regexp = "^[\\x01-\\x7f]*$", message = "不能有中文字符")
    private String userAccounts;

    /**
     * 用户密码
     */
    @ApiModelProperty(value = "用户密码,注册企业时可不传,密码必须是包含大写字母、小写字母、数字、特殊符号（不是字母，数字，下划线，汉字的字符）的8位以上组合", notes = "用户密码,注册企业时可不传,密码必须是包含大写字母、小写字母、数字、特殊符号（不是字母，数字，下划线，汉字的字符）的8位以上组合", dataType = "String")
    @Pattern(regexp = "^[\\x01-\\x7f]*$", message = "不能有中文字符")
    private String userPassword;

    /**
     * 手机号码
     */
    @ApiModelProperty(value = "手机号码", notes = "手机号码", dataType = "String", required = true)
    @NotEmpty(message = "手机号码不能为空")
    private String telephone;

    /**
     * 用户名称
     */
    @ApiModelProperty(value = "用户名称,注册企业时与企业名称相同", notes = "用户名称,注册企业时与企业名称相同", dataType = "String", required = true)
    @NotEmpty(message = "用户名称不能为空")
    @Size(min = 0, max = 255, message = "长度为255")
    private String userName;
    
    /**
     * 企业名称
     */
    @ApiModelProperty(value = "企业名称", notes = "企业名称", dataType = "String")
    @Size(min = 0, max = 255, message = "长度为255")
    private String companyName;

    /**
     * 证件种类,00-统一社会信用代码,01-组织机构代码证,营业执照,税务登记证,04-身份证
     */
    /*
    @ApiModelProperty(
            value = "证件种类,00-统一社会信用代码,01-组织机构代码证,营业执照,税务登记证,04-身份证",
            notes = "证件种类,00-统一社会信用代码,01-组织机构代码证,02-营业执照,03-税务登记证,04-身份证",
            dataType = "String",
            required = true)
    @Pattern(regexp = "^[\\x01-\\x7f]*$", message = "不能有中文字符")
    @Size(min = 2, max = 2, message = "长度为2")
    @NotEmpty(message = "证件种类不能为空")
    */
    @ApiModelProperty(
            value = "证件种类,00-统一社会信用代码,01-组织机构代码证,04-身份证，" +
                    "05-护照，06-香港通行证，07-澳门通行证，08-台湾居民来往大陆通行证(山港易付注册企业下部门时不需上送)",
            notes = "证件种类,00-统一社会信用代码,01-组织机构代码证,04-身份证，" +
                    "05-护照，06-香港通行证，07-澳门通行证，08-台湾居民来往大陆通行证(山港易付注册企业下部门时不需上送)",
            dataType = "String", required = true)
    @Pattern(regexp = "^[\\x01-\\x7f]*$", message = "不能有中文字符")
    @Size(min = 0, max = 2, message = "长度为2")
    private String papersType;

    /**
     * 证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证
     */
    /*@ApiModelProperty(
            value = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证",
            notes = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证",
            dataType = "String",
            required = true)
    @NotEmpty(message = "证件编号不能为空")*/
    @ApiModelProperty(
            value = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时该字段为身份证，" +
                    "05时该字段为护照，06时该字段为香港通行证，07时该字段为澳门通行证，08时该字段为台湾居民来往大陆通行证(山港易付注册企业下部门时不需上送)",
            notes = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时该字段为身份证，" +
                    "05时该字段为护照，06时该字段为香港通行证，07时该字段为澳门通行证，08时该字段为台湾居民来往大陆通行证(山港易付注册企业下部门时不需上送)",
            dataType = "String", required = true)
    private String papersNo;
    
    /**
     * 营业执照编号
     */
    @ApiModelProperty(value = "营业执照编号(非三证合一时必填)", notes = "营业执照编号(非三证合一时必填)", dataType = "String")
    private String bussinessLicenseNo;
    
    /**
     * 税务登记证编号
     */
    @ApiModelProperty(value = "税务登记证编号", notes = "税务登记证编号", dataType = "String")
    private String taxRegistrationNo;

    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人", notes = "联系人", dataType = "String",required = true)
    @Size(min = 0, max = 255, message = "长度为255")
    @NotEmpty(message = "联系人不能为空")
    private String contacts;

    /**
     * 客户经理id
     */
    @ApiModelProperty(value = "客户经理id", notes = "客户经理id", dataType = "Integer")
    private Integer customerId;

    /**
     * 电子邮箱
     */
    /*@ApiModelProperty(value = "电子邮箱", notes = "电子邮箱", dataType = "String")
    private String email;*/

    /**
     * 邀请码。
     */
    @ApiModelProperty(
            value = "邀请码",
            notes = "邀请码",
            dataType = "String")
    private String inviteCode;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述", notes = "描述", dataType = "String")
    @Size(min = 0, max = 255, message = "长度为255")
    private String describeStr;
    
    /**
     * 上级企业id
     */
    @ApiModelProperty(value = "上级企业id", notes = "上级企业id", dataType = "Integer")
    private Integer parentId;
    
    /**
     * 山港易付id
     */
    @ApiModelProperty(value = "山港易付id", notes = "山港易付id", dataType = "String")
    private String sgyfId;

    @ApiModelProperty(value = "业态公司id", notes = "业态公司id")
    private Integer formatId;
}
